package cn.codergege.kotlinbasics.basictype

import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Test
import org.springframework.boot.test.context.SpringBootTest

@SpringBootTest
class NumberDemoTest {
    @Test
    fun testByte() {
        var count: Byte = 100
        assertEquals(100, count)
    }

    @Test fun testShort() {
        // 这里用 _ 使数值可读性更好, 一下就能看出是 3 万
        val total: Short = 3_0000
        assertEquals(30000, total)
    }

    @Test fun testInt() {
        // 3 亿
        // 默认 Int
        var num = 3_0000_0000
        assertEquals(3_0000_0000, num)
        // 使用 is 关键字来判断类型
        assertTrue(num is Int)
    }

    @Test fun testLong() {
        // 后面要加 L
        var bigNum: Long = 3_0000_0000_0000_0000L
        assertEquals(3_0000_0000_0000_0000L, bigNum)
    }

    @Test fun testFloat() {
        // 标记了 f, 就可以省略类型了, 因为编译器可以推断出来
        var pi = 3.1415926f
        assertEquals(3.1415926f, pi)
        assertTrue(pi is Float)
        // assertTrue(pi is Double) // 编译就报错了
    }

    @Test fun testDouble() {
        // 默认 Double 类型
        var pi = 3.14
        assertEquals(3.14, pi)
        assertTrue(pi is Double)
    }
}